﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Controller;
using Interfaces;

namespace GUI
{
    public partial class FrmHaandtérKunde : Form
    {

        vandspareSystem VandspareSystem;
        ListViewItem kunde;
        ListViewItem tilbud;
        ListViewItem Virk;


        public FrmHaandtérKunde(vandspareSystem VandspareSystem)
        {
            InitializeComponent();
            this.VandspareSystem = VandspareSystem;
            OpdaterKundeListe();
            Lock();
            KundeCounter();
            btnRedigerKunde.Enabled = false;
            btnSletKunde.Enabled = false;
        }


        private void KundeCounter()
        {
            try
            {
                lblCount.Text = VandspareSystem.kundeCol.Kunder.Count - 1 + " Kunder i alt."; //Minus 1, da default-kunden ikke skal med!
            }
            catch
            {
                lblCount.Text = "Ingen kunder i systemet.";
            }
        }


        private void ClearTextbokse()
        {
            txtNavn.Clear();
            txtBy.Clear();
            txtCVR.Clear();
            txtEAN.Clear();
            txtPostNr.Clear();
            txtTLF.Clear();
            txtEmail.Clear();
            txtKonto.Clear();
            txtAdresse.Clear();
        }
        

        private void Unlock()
        {
            txtNavn.Enabled = true;
            txtCVR.Enabled = true;
            txtEAN.Enabled = true;
            txtPostNr.Enabled = true;
            txtEmail.Enabled = true;
            txtKonto.Enabled = true;
            txtAdresse.Enabled = true;
        }


        private void Lock()
        {
            txtNavn.Enabled = false;
            txtCVR.Enabled = false;
            txtEAN.Enabled = false;
            txtPostNr.Enabled = false;
            txtEmail.Enabled = false;
            txtKonto.Enabled = false;
            txtAdresse.Enabled = false;
            txtTLF.Enabled = false;
            txtBy.Enabled = false;
        }


        private void btnSletKunde_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Er du sikker på at du vil slette " + txtNavn.Text + "?" + "\r\n" + "Sletningen kan IKKE fortrydes!", "Du er igang med at slette kunde " + txtTLF.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (res == DialogResult.Yes)
            {
                if (VandspareSystem.SletKunde(Convert.ToInt32(txtTLF.Text)))
                {
                    string skunde = txtTLF.Text;
                    
                    OpdaterKundeListe();
                    ClearTextbokse();
                    Lock();
                    KundeCounter();
                    lstVirksomheder.Items.Clear();
                    lstTilbud.Items.Clear();
                    btnRedigerKunde.Enabled = false;
                    btnSletKunde.Enabled = false;
                    lblStatus.Text = "Kunde - " + skunde + " er nu slettet fra systemet";
                }
                else
                {
                    MessageBox.Show("Kunden kan ikke slettes fra Systemet");
                }
            }
            else
            {
            }
        }

        public void OpdaterKundeListe()
        {
            try
            {

            lstAlleKunder.Items.Clear();
            List<IKunde> Kundeliste = VandspareSystem.HentKunder();
            

            for (int i = 1; i < Kundeliste.Count(); i++)
            {
                kunde = new ListViewItem(Kundeliste[i].Kundenr.ToString());
                kunde.SubItems.Add(Kundeliste[i].Navn.ToString());

                lstAlleKunder.Items.Add(kunde);
            }

            }
            catch (Exception)
            {

                MessageBox.Show("Der er ingen kunder i systemet. Opret venligst en kunde først!");
            }
        }


        //mads opdaterer kundens tilbudsliste
        public void OpdaterTilbudsListe()
        {
            lstTilbud.Items.Clear();
            List<ITilbud> TilbudListe = VandspareSystem.HentKundesTilbudsData();

            for (int i = 0; i < TilbudListe.Count(); i++)
            {
                tilbud = new ListViewItem(TilbudListe[i].Dato.ToString());

                lstTilbud.Items.Add(tilbud);

            }
        }


        //mads opdaterer kundens virksomhedsliste
        public void OpdaterVirksomhedsListe()
        {
            lstVirksomheder.Items.Clear();
            List<IVirksomhedsdata> VirkListe = VandspareSystem.HentKundesVirkData();

            for (int i = 0; i < VirkListe.Count(); i++)
            {
                Virk = new ListViewItem(VirkListe[i].Navn.ToString());

                lstVirksomheder.Items.Add(Virk);

            }
        }


        private void lstAlleKunder_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Jesper
            if (lstAlleKunder.SelectedItems.Count > 0)
            {
                int selectedIndex = lstAlleKunder.SelectedIndices[0];

                ListViewItem Kunde = lstAlleKunder.Items[selectedIndex];

                int Kundenr = Convert.ToInt32(Kunde.SubItems[0].Text);

                IKunde kunde = VandspareSystem.FindKunde(Kundenr);

                txtNavn.Text = kunde.Navn.ToString();
                txtAdresse.Text = kunde.Adresse.ToString();
                txtPostNr.Text = kunde.Postnr.ToString();
                txtBy.Text = kunde.By.ToString();
                txtEAN.Text = kunde.Ean.ToString();
                txtCVR.Text = kunde.Cvr.ToString();
                txtKonto.Text = kunde.Kontonr.ToString();
                txtTLF.Text = kunde.Kundenr.ToString();
                txtEmail.Text = kunde.Email.ToString();
                Unlock();

                OpdaterTilbudsListe();
                OpdaterVirksomhedsListe();
                btnRedigerKunde.Enabled = true;
                btnSletKunde.Enabled = true;
                
            }
        }

        private void tooltip(PictureBox pic, string besked)
        {
            ToolTip toolTip = new ToolTip();
            toolTip.IsBalloon = true;
            toolTip.SetToolTip(pic, besked);
        }

        private bool validerInput()
        {
            int point = 0;

            // Indlæs kundenr (telefonnr)
            if (!InputValidator.INT(txtTLF.Text))
            {
                picTlf.Visible = true;
                tooltip(picTlf, "Ugyldigt tlf.");
                point++;

            }

            // Indlæs navn
            if (txtNavn.Text == "")
            {
                picNavn.Visible = true;
                tooltip(picNavn, "Intast venligst et navn");
                point++;
            }
            else
            {
                picNavn.Visible = false;
            }

            // Indlæs adresse
            if (txtAdresse.Text == "")
            {
                tooltip(picAdresse, "Indtast venligst en adresse");
                picAdresse.Visible = true;
                point++;
            }
            else picAdresse.Visible = false;

            // Indlæs postnr
            if (!InputValidator.INT(txtPostNr.Text))
            {
                tooltip(picPost, "Indtast venligst et postnr (heltal)");
                picPost.Visible = true;
                point++;
            }
            else picPost.Visible = false;


            // Indlæs cvrnr, dog gerne tomt
            if (!InputValidator.INT(txtCVR.Text))
            {
                txtCVR.Text = "0";

            }

            // Indlæs EANnr, dog gerne tomt
            if (!InputValidator.INT(txtEAN.Text))
            {
                txtEAN.Text = "0";
            }

            // Indlæs kontonr
            if (!InputValidator.INT(txtKonto.Text))
            {
                tooltip(picKonto, "Indtast venligst et Kontonr (heltal)");
                picKonto.Visible = true;
                point++;
            }
            else picKonto.Visible = false;

            // Indlæs email
            if (txtEmail.Text == "")
            {
                tooltip(picEmail, "Der er igen e-mail");
                picEmail.Visible = true;
                point++;
            }
            else picEmail.Visible = false;

            if (point == 0) return true;
            else return false;
        }


        //Jesper - Rediger Kunde
        private void btnRedigerKunde_Click(object sender, EventArgs e)
        {
            
            int kundenr;
            string navn;
            string adresse;
            int postnr;
            string by;
            int cvr;
            int ean;
            long kontonr;
            string email;

            if (validerInput())
            {

                navn = txtNavn.Text;
                adresse = txtAdresse.Text;
                by = "by";
                postnr = Convert.ToInt32(txtPostNr.Text);
                ean = Convert.ToInt32(txtEAN.Text);
                cvr = Convert.ToInt32(txtCVR.Text);
                kontonr = Convert.ToInt32(txtKonto.Text);
                email = txtEmail.Text;
                kundenr = Convert.ToInt32(txtTLF.Text);

                if (VandspareSystem.OpdaterKunde(kundenr, navn, adresse, by, postnr, cvr, ean, kontonr, email))
                {
                    MessageBox.Show("Kunden er vellykket redigeret!");
                    ClearTextbokse();
                    OpdaterKundeListe();
                    Lock();
                    btnRedigerKunde.Enabled = false;
                    btnSletKunde.Enabled = false;
                    lstTilbud.Items.Clear();
                    lstVirksomheder.Items.Clear();
                }
                else
                {
                    MessageBox.Show("Der er sket en fejl! Prøv igen eller kontakt administrator!");
                }
            }
        }


        private void lstTilbud_SelectedIndexChanged(object sender, EventArgs e)
        {
            
                try
                {

                    if (lstTilbud.SelectedItems.Count > 0)
                    {

                        int selectedIndex = lstTilbud.SelectedIndices[0];

                        ListViewItem Tilbud = lstTilbud.Items[selectedIndex];
                        DateTime dato1 = Convert.ToDateTime(Tilbud.SubItems[0].Text);
                        TilbudsRapport frmtilbudsrapport = new TilbudsRapport(VandspareSystem, dato1);
                        frmtilbudsrapport.ShowDialog();
                        this.BringToFront();
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Fejl");
                }
            }
        


        private void lstVirksomheder_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        private void FrmHaandtérKunde_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.DialogResult = DialogResult.OK;
        }

        private void btnLuk_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        
        
    }
}
